home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Origin & Onyx2 Patches 1998 May
/
Origin and Onyx2 System Disk Patches May 1998.img
/
relnotes
/
patchSG0002715
/
ch1.z
/
ch1
Wrap
Text File
|
1998-04-22
|
15KB
|
463 lines
- 1 -
1. _P_a_t_c_h__S_G_0_0_0_2_7_1_5__R_e_l_e_a_s_e__N_o_t_e
This release note describes patch SG0002715 to IRIX 6.2,
IRIX 6.3 and IRIX 6.4.
1.1 _S_u_p_p_o_r_t_e_d__H_a_r_d_w_a_r_e__P_l_a_t_f_o_r_m_s
This patch contains bug fixes for all hardware platforms
running IRIX6.2, IRIX6.3, or IRIX6.4.
1.2 _S_u_p_p_o_r_t_e_d__S_o_f_t_w_a_r_e__P_l_a_t_f_o_r_m_s
This patch contains bug fixes to rld and rld.debug (all 3
ABIs) on a system running IRIX6.2, IRIX6.3, or IRIX6.4. It
also contains bug fixes to rqs, rqsall and related
utilities. The patch is appropriate for systems with
compiler_eoe from MIPSpro7.2 or earlier installed (on any of
the applicable IRIX versions).
This patch replaces patches 1266, 1270, 1336, 1384, 1584,
1681, 1932, 2044, 2261 and 2458.
The software cannot be installed on other configurations.
In particular, this patch will not install on systems with
compiler_eoe from MIPSpro7.2.1. The MR images of the 7.2.1
compilers will include versions of rld, rqs, and rqsall
containing all of these bug fixes.
1.3 _B_u_g_s__F_i_x_e_d__b_y__P_a_t_c_h__S_G_0_0_0_2_7_1_5
This patch contains fixes for the following bugs in IRIX
6.2, IRIX 6.3 and IRIX 6.4. Bug numbers from Silicon
Graphics bug tracking system are included for reference.
+o This patch provides rld and rqs binaries which are
required to run code compiled with the 7.2.1 linker
multigot feature (Bug #546958). This patch should be
installed if patch 2715 or one of its successor patches
is present.
+o Rld fails to handle multigot shared objects that are
relocated (Bug #534245)
+o Rqs fails to handle multigot shared objects that are
relocated. This is the same as bug number 534245 in
rld (Bug #536186).
+o Rld could hang when outputting error messages or
warnings in multithreaded programs. Whether a hang
- 2 -
actually occurred would depend upon the timing of
events and rld processing requirements (Bug #520846).
+o Cosmoplayer (the VRML display software) was unable to
load most worlds due to incorrect symbol preemption in
DSOs containing symlib tables. The problem could
affect other applications as well (Bug #523673).
+o Rld could, under some circumstances, unnecessarily
reprocess conflict symbols. This conflict resolution
could be time-consuming for apps dlopening libraries
containing many conflict symbols at startup (Bug
#554894)
+o Sgidlopen_version failed to return handles for
versioned DSOs when version lookup required searching
for DSOs whose filenames had been suffixed with the
major version number (e.g., libfoo.so.2) This was a
regression from the rld in the 7.1 compiler release
(Bug #560586).
+o At runtime, rld uses the timestamp of a dso as the key
to determine if this is the actual dso against which we
originally linked. It depends upon timestamps of dso's
to be unique. It assumes there can never be two
different dso's with the same soname and same
timestamp. Rqsall (and rqs) run so fast that it is
possible for two libraries with the same soname to get
the same timestamp. [ex. rqs'ing mips3/libm.so and
mips4/libm.so] Rqsall now assigns unique timestamps to
libraries with the same soname. (Bug #538535)
+o Rqsall has been updated to do a better job of assigning
load addresses to DSOs. It now honors reasonable
values of $start_address in the so_locations files (Bug
#556199), computes library sizes accurately (Bug
#561583), uses appropriate upper and lower address
bounds for laying out o32, n32 and n64 libraries (Bug
#566180). The -move option now provides a mechanism
for forcing a full requickstart of the installed DSOs.
New load addresses are assigned to each DSO, packing
them as tightly as possible. (Bug #555509)
The following bug fixes were originally provided in one or
more of the patches replaced by this patch.
+o A multigot DSO that moves at run time could coredump
the application due to incorrect handling of
relocations. (Bug #534245)
- 3 -
+o This patch has a correction for a bug in
LD_LIBRARY_PATH handling introduced in patch 2261 (2261
was withdrawn and is not available because of the bug).
(Bug #530749)
+o If a circular DSO liblist dependency exists the
dlopen() reference counting was wrong resulting in an
extra reference being counted. This could mean that on
dlclose() that the reference count did not decrement to
0 (ever) and that any -fini code would not be run on
the affected DSO. Circular liblist dependencies (even
indirect) are a bad thing and the order of execution of
-init and -fini code is undefined. But at least now the
reference count is correct. (Bug #527001)
+o Delay-loading DSOs could be slow if there were a lot of
DSOs. Now in many cases delay-loading is faster. (Bug
#506076)
+o The static size of rld's text is now significantly
smaller than previous versions. (Bug #506166).
+o Confusing messages about OEX flags (rarely seen) are
now easier to understand. (Bug #507206)
+o A completely useless warning about a DSO not being the
right ABI (useless because rld simply keeps looking for
the right DSO anyway) is now suppressed unless the
environment variable _RLD_ARGS has the -v option. (Bug
503926)
+o Previous patches fixing the problems noted below (such
as 2044) could fail to replace a *.sw32 subsystem: that
subsystem no longer exists (it did in patch 1584 for
example) so leaving it behind was a mistake in patch
2044. The rld set here is identical to the rld set in
patch 2044, but the installation 'replaces' rules have
been adjusted to clean up the installation database on
any IRIX 6.2 6.3 or 6.4 system this patch is installed
on (the parts of that installation database that relate
to rld).
+o When running a setuid/setgid program rld could be
tricked into creating a security hole. Now rld ignores
the -log option of the _RLD_ARGS environment variable
for setuid/setgid programs unless the real user is root
(in addition, rld continues to ignore some environment
variables when handling setuid/setgid programs run by
non-root users to avoid security holes). (Bug #482870)
- 4 -
+o When running a multigot DSO (a very very very unusual
DSO) rld could coredump if the DSO was moved when
loaded. (Bug #483964)
+o rld could hang a pthreads process if one or more
threads called fork(2) or if there were multiple
threads on a single sproc process-id or if a thread
moved from one process-id to another (in an sproc
group). Whether a hang occurred depended on the timing
of events and how the events happened to relate to rld
processing. In addition, an annoying message about
"GUARANTEE INIT" could be emitted by rld when the
message was inappropriate (with certain
processes/libraries using pthreads). (Bug #412725)
+o rld could coredump if it thought it had allocated an
internal table (the msym table) but in reality the
compilation system had built it: writing to the
compiler-system-built table is an error (it is in
read-only memory) and unnecessary. (Bug #449282)
+o If a program did a series of dlclose(3)s and sproc(2)s
quickly enough and the timing was just right rld would
hang, hanging the program. The program was killable,
but the sproc-thread could not be continued and the
program run was normally useless as a result of the
hang. (Bug #433288)
+o The runtime linker corrupts the user's data segment
when long LD_LIBRARY_PATH is specified. It usually
results in segmentation fault while running the user
application. (Bug #337982)
+o The runtime linker does not fix-up binaries with
prefetch instructions correctly when the binaries are
run on r8000 machines. This fix is only effective if
one of the kernel rollup patches in the series
beginning with patch 1722 is also installed (as of the
writing of these release notes the latest kernel rollup
patch is patch 2187, but be sure to check with with
your patch provider about kernel rollup patches). The
runtime linker may emit a message like "Cannot open
<executable> to fix up prefetches" on attempting to run
a binary with prefetches (such as a binary compiled for
the R10000) on an R8000 CPU if one of the kernel
patches is not installed. (Bug #352206)
+o The runtime linker would core dump on pixified binaries
if those binaries contain prefetch instructions. (Bug
#383655)
- 5 -
+o The runtime linker loops when 2 delay-loaded libraries
are linked into the same executable and the 2 libraries
are inter-dependent on each other. Also, the
performance of the libdl routines are not acceptable in
big applications when hundreds of libraries are loaded
using dlopen calls. (Bug #361758)
+o Specifing LD_LIBRARY_PATH with more than approximately
500 characters causes rld to dump core. (Bug #337982)
+o The runtime linker loops in dlsym call. (Bug #364118)
+o The runtime linker loops when dlopen'ing libraries that
have inter-dependencies. (Bug #290198)
+o Initialized COMMON block variables have incorrect
values. (Bug #387407)
+o Dlopen(...,RTLD_NOW) does not report undefined symbols.
(Bug #428927)
+o rqs will sometimes write an incorrect value to the
zero-th entry of the global-offset-table(GOT) of a C++
shared object or executable.
This resulted in segmentation fault when the executable
or shared object containing the bad value is used. (Bug
#366990).
1.4 _S_u_b_s_y_s_t_e_m_s__I_n_c_l_u_d_e_d__i_n__P_a_t_c_h__S_G_0_0_0_2_7_1_5
This patch release includes these subsystems:
+o patchSG0002715.compiler_eoe_sw.unix
+o patchSG0002715.compiler_eoe_sw64.unix
+o patchSG0002715.compiler_eoe_man.dso
+o patchSG0002715.compiler_eoe_man.unix
+o patchSG0002715.compiler_eoe.hdr.lib
+o patchSG0002715.compiler_dev.hdr.lib
- 6 -
1.5 _I_n_s_t_a_l_l_a_t_i_o_n__I_n_s_t_r_u_c_t_i_o_n_s
Because you want to install only the patches for problems
you have encountered, patch software is not installed by
default. After reading the descriptions of the bugs fixed
in this patch (see Section 1.3), determine the patches that
meet your specific needs.
If, after reading Sections 1.1 and 1.2 of these release
notes, you are unsure whether your hardware and software
meet the requirements for installing a particular patch, run
_i_n_s_t. The _i_n_s_t program does not allow you to install
patches that are incompatible with your hardware or
software.
Patch software is installed like any other Silicon Graphics
software product. Follow the instructions in your _S_o_f_t_w_a_r_e
_I_n_s_t_a_l_l_a_t_i_o_n _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e to bring up the miniroot
form of the software installation tools.
Follow these steps to select a patch for installation:
1. At the Inst> prompt, type
iiiinnnnssssttttaaaallllllll ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
where _x_x_x_x_x_x_x is the patch number.
2. Initiate the installation sequence. Type
IIIInnnnsssstttt>>>> ggggoooo
3. You may find that two patches have been marked as
incompatible. (The installation tools reject an
installation request if an incompatibility is
detected.) If this occurs, you must deselect one of
the patches.
IIIInnnnsssstttt>>>> kkkkeeeeeeeepppp ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
where _x_x_x_x_x_x_x is the patch number.
4. After completing the installation process, exit the
_i_n_s_t program by typing
IIIInnnnsssstttt>>>> qqqquuuuiiiitttt
- 7 -
1.6 _P_a_t_c_h__R_e_m_o_v_a_l__I_n_s_t_r_u_c_t_i_o_n_s
To remove a patch, use the _v_e_r_s_i_o_n_s _r_e_m_o_v_e command as you
would for any other software subsystem. The removal process
reinstates the original version of software unless you have
specifically removed the patch history from your system.
vvvveeeerrrrssssiiiioooonnnnssss rrrreeeemmmmoooovvvveeee ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
where _x_x_x_x_x_x_x is the patch number.
To keep a patch but increase your disk space, use the
_v_e_r_s_i_o_n_s _r_e_m_o_v_e_h_i_s_t command to remove the patch history.
vvvveeeerrrrssssiiiioooonnnnssss rrrreeeemmmmoooovvvveeeehhhhiiiisssstttt ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
where _x_x_x_x_x_x_x is the patch number.
1.7 _K_n_o_w_n__P_r_o_b_l_e_m_s